/*lic*/
#ifndef __BSP_BASE_DEF_H__
#define __BSP_BASE_DEF_H__

#include "main.h"

/** !\brief 配置一些别名对象
*
*/
#define ETH_RST1_PORT   GPIO_PORT_B
#define ETH_RST1_PIN    GPIO_PIN_01

#define SPI1_CS2_PORT   GPIO_PORT_D
#define SPI1_CS2_PIN    GPIO_PIN_06

#define SPI1_CS1_PORT   GPIO_PORT_B
#define SPI1_CS1_PIN    GPIO_PIN_07

#define RESET_PORT   GPIO_PORT_I
#define RESET_PIN    GPIO_PIN_13

#define LED_ERR_PORT   GPIO_PORT_B
#define LED_ERR_PIN    GPIO_PIN_12

#define LED_RUN_PORT   GPIO_PORT_F
#define LED_RUN_PIN    GPIO_PIN_10

#define RTC_INT_PORT   GPIO_PORT_G
#define RTC_INT_PIN    GPIO_PIN_08

#define U2_RTS_PORT   GPIO_PORT_A
#define U2_RTS_PIN    GPIO_PIN_06

#define CAN1_STB_PORT   GPIO_PORT_B
#define CAN1_STB_PIN    GPIO_PIN_09

#define NET_4G_RST_RN7326E_RST_PORT   GPIO_PORT_C
#define NET_4G_RST_RN7326E_RST_PIN    GPIO_PIN_13

#define ETH_RTS2_PORT   GPIO_PORT_B
#define ETH_RTS2_PIN    GPIO_PIN_11

#define NET_4G_INT_RN7326E_INT_PORT   GPIO_PORT_C
#define NET_4G_INT_RN7326E_INT_PIN    GPIO_PIN_00

// 毫秒计数
extern uint32_t ms_cnt;

//I2C结构体
/**
 * @brief I2c communication mode enum
 */
 typedef enum {
  MD_Read = 0U,
  MD_Write = 1U,
} I2c_Transport_Status_Def;

/**
 * @brief I2c communication status enum
 */
typedef enum {
  I2C_PORT_BUSY = 0U,
  I2C_PORT_IDLE = 1U,
} I2c_Port_Status_Def;

typedef struct __Tag_I2c_Data_Task_Def {
  I2c_Transport_Status_Def transport_mode;   /*!< I2C 通信模式，读还是写*/
  uint16_t send_data_len;                    /*!< I2C 发送长度*/
  uint16_t receive_data_len;                 /*!< I2C 接收长度*/
  __IO uint16_t send_translate_index;        /*!< I2C 发送数据指针索引*/
  __IO uint16_t receive_translate_index;     /*!< I2C 接收数据指针索引*/
  __IO I2c_Port_Status_Def port_status; 	 /*!< I2C 端口状态，忙碌还是空闲*/
  uint8_t data_buf[50];                      /*!< I2C 数据缓冲区*/
} I2c_Data_Task_Def;
//I2C结构体

// RTC任务控制结构体
typedef struct __Tag_Rtc_Ctrl_Task_Def {
	// 绑定状态，确定i2c4的运行状态
	struct rt_messagequeue *i2c4_mq;
	I2c_Data_Task_Def* i2c4_rx_obj;
} Rtc_Ctrl_Task_Def;

#endif /* __BSP_BASE_DEF_H__ */

/*eof*/
